--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
release_hashes.py 6bbcaa0ba959cfcb3aaff398339fa09cce054fd6 (6bbcaa0b) Text, 1.73 KB
T8b949e#!/bin/python
T8b949e# Copyright (C) 2024, Mark Qvist
T8b949e# This program is free software: you can redistribute it and/or modify
T8b949e# it under the terms of the GNU General Public License as published by
T8b949e# the Free Software Foundation, either version 3 of the License, or
T8b949e# (at your option) any later version.
T8b949e# This program is distributed in the hope that it will be useful,
T8b949e# but WITHOUT ANY WARRANTY; without even the implied warranty of
T8b949e# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
T8b949e# GNU General Public License for more details.
T8b949e# You should have received a copy of the GNU General Public License
T8b949e# along with this program. If not, see <https://www.gnu.org/licenses/>.
Tff7b72import T7ee787os
Tff7b72import T7ee787json
Tff7b72import T7ee787hashlib
Te6edf3major_version Tff7b72= Tff7b72None
Te6edf3minor_version Tff7b72= Tff7b72None
Te6edf3target_version Tff7b72= Tff7b72None
Te6edf3file Tff7b72= Tffa657openTb4b4b4(Ta5d6ff"Ta5d6ffConfig.hTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffrbTa5d6ff"Tb4b4b4)
Te6edf3config_data Tff7b72= Te6edf3fileTff7b72.Td2a8ffreadTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffsplitlinesTb4b4b4(Tb4b4b4)
Tff7b72for Te6edf3line Tff7b72in Te6edf3config_dataTb4b4b4:
Te6edf3dline Tff7b72= Te6edf3lineTff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Te6edf3components Tff7b72= Te6edf3dlineTff7b72.Td2a8ffsplitTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3dlineTff7b72.Td2a8ffstartswithTb4b4b4(Ta5d6ff"Ta5d6ff#define MAJ_VERSTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3major_version Tff7b72= Ta5d6ff"Tffd700%01dTa5d6ff" Tff7b72% Tffa657ordTb4b4b4(Tffa657bytesTff7b72.Td2a8fffromhexTb4b4b4(Te6edf3dlineTff7b72.Td2a8ffsplitTb4b4b4(Tb4b4b4)Tb4b4b4[T79c0ff2Tb4b4b4]Tff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff"Ta5d6ffxTa5d6ff"Tb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4)Tb4b4b4)
Tff7b72if Te6edf3dlineTff7b72.Td2a8ffstartswithTb4b4b4(Ta5d6ff"Ta5d6ff#define MIN_VERSTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3minor_version Tff7b72= Ta5d6ff"Tffd700%02dTa5d6ff" Tff7b72% Tffa657ordTb4b4b4(Tffa657bytesTff7b72.Td2a8fffromhexTb4b4b4(Te6edf3dlineTff7b72.Td2a8ffsplitTb4b4b4(Tb4b4b4)Tb4b4b4[T79c0ff2Tb4b4b4]Tff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff"Ta5d6ffxTa5d6ff"Tb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4)Tb4b4b4)
Te6edf3target_version Tff7b72= Te6edf3major_versionTff7b72+Ta5d6ff"Ta5d6ff.Ta5d6ff"Tff7b72+Te6edf3minor_version
Te6edf3release_hashes Tff7b72= Tb4b4b4{Tb4b4b4}
Te6edf3target_dir Tff7b72= Ta5d6ff"Ta5d6ff./ReleaseTa5d6ff"
Te6edf3files Tff7b72= Te6edf3osTff7b72.Td2a8fflistdirTb4b4b4(Te6edf3target_dirTb4b4b4)
Tff7b72for Te6edf3filename Tff7b72in Te6edf3filesTb4b4b4:
Tff7b72if Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffisfileTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3target_dirTb4b4b4, Te6edf3filenameTb4b4b4)Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3filenameTff7b72.Td2a8ffstartswithTb4b4b4(Ta5d6ff"Ta5d6ffrnode_firmwareTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3file Tff7b72= Tffa657openTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3target_dirTb4b4b4, Te6edf3filenameTb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffrbTa5d6ff"Tb4b4b4)
Te6edf3release_hashesTb4b4b4[Te6edf3filenameTb4b4b4] Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4: Te6edf3hashlibTff7b72.Td2a8ffsha256Tb4b4b4(Te6edf3fileTff7b72.Td2a8ffreadTb4b4b4(Tb4b4b4)Tb4b4b4)Tff7b72.Td2a8ffhexdigestTb4b4b4(Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffversionTa5d6ff"Tb4b4b4: Te6edf3target_version
Tb4b4b4}
Tffa657printTb4b4b4(Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Te6edf3release_hashesTb4b4b4)Tb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────